package main

import (
	"errors"
	"fmt"
)

func main() {
	//invalid operation: nil == nil (operator == not defined on nil)
	//fmt.Println(nil == nil)

	//不提倡这样做
	var nil = errors.New("my god")
	fmt.Println("nil:", nil)

	//没有默认类型
	//fmt.Printf("%T", nil)

	//不同类型 nil 的指针是一样的
	var arr []int
	var num *int
	fmt.Printf("%p\n", arr)
	fmt.Printf("%p", num)
	fmt.Println()
	//是 map、slice、pointer、channel、func、interface 的零值
	var m map[int]string
	var ptr *int
	var c chan int
	var sl []int
	var f func()
	var i interface{}

	fmt.Printf("%#v\n", m)
	fmt.Printf("%#v\n", ptr)
	fmt.Printf("%#v\n", c)
	fmt.Printf("%#v\n", sl)
	fmt.Printf("%#v\n", f)
	fmt.Printf("%#v\n", i)

}
